package com.xcw.test;

/**
 * @author bhx
 * @Class P1_
 * @date 2022/11/12 13:44
 * @Description TODO
 */

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 试题3、六一儿童节快到了，学校组织了一场记忆力比拼游戏。游戏台面上摆放有 N盏彩灯编号从1到N。这些灯一开始都是白色。每按下一盏灯的开关，这盏灯的颜色就会改变。如果当前是白色，它会变成红色。如果当前灯是红色，
 *
 * 它会变成黄色。如果当前灯是黄色，它会变成蓝色。如果当前灯是蓝色，它会变成白色
 * 游戏开始时，要求小朋友闭眼，然后老师开始随意挑选彩灯并按动开关，同时将会喊出该彩灯的编号。经过多次操作之后，要求小朋友告知哪种颜色的彩灯数量最多。你能写一个程序在记忆力比拼游戏中胜出吗?
 * (1)本题分值:50分。
 * (2)考核时间: 90min。
 * (3)考核形式:上机实操。
 * (4)编程语言: C/C++、Python、Java 任选一种语言。
 * (5)输入:第一行一个正整数N (N<=100)，表示有 N盏灯;接下来有任意多个正整数(不超过N)，表示老师喊的编号。
 * (6)输出:
 * 如果最后白色灯最多，则输出 white，以及具体数量，用空格分隔如果最后红色灯最多，则输出 red，以及具体数量，用空格分隔如果最后黄色灯最多，则输出 yellow，以及具体数量，用空格分隔如果最后蓝色灯最多，则输出 blue，以及具体数量，用空格分隔如果最后有多个颜色并列最多，则只输出具体数量。
 * (7)样例输入:
 * 3
 * 1 红色
 * 2红色
 * 1黄色
 * 2黄色
 * (8)样例输出:
 * yellow2
 * 提示: 样例中有 3盏灯，它们一开始都是白色。老师依次改变了第
 * 白色->红色->黄色->蓝色->白色
 */
public class P1_11_9 {
    public static String[] colors = {"white","red","yellow","blue"};
    public static Map<Integer, String>  lamps = new HashMap<>();
    public static boolean switchLampColor(int index){
        if (0>= index || 100 < index){
            System.out.println("不存在这样一盏灯");
            return false;
        }
        if (lamps.containsKey(index)){
            String color = lamps.get(index);
            lamps.put(index, switchColor(color));
            return true;
        } else {
            System.out.println("不存在这样一盏灯");
            return false;
        }
    }
    public static boolean setLamps(int counts){
        //存放灯的数量
        if (0>= counts || 100 < counts){
            System.out.println("灯至少要有一盏且不能大于100盏！");
            return false;
        }
        for (int i = 1; i < counts + 1; i++) {
            lamps.put(i, colors[0]);
        }
        return true;

    }

    public static String switchColor(String color){
        switch (color){
            case "white":
                return "red";
            case "red":
                return "yellow";
            case "yellow":
                return "blue";
            case "blue":
                return "white";
            default:
                return "white";
        }
    }

    public static String getMaxColorLamps(){
        Map<String,Integer> result = new HashMap<>();
        for (int i = 0; i < colors.length; i++) {
            result.put(colors[i],0);
        }
        Object[] objects =  lamps.keySet().toArray();
        for (int i = 0; i < objects.length; i++) {
            String color = lamps.get(objects[i]);
            int count = result.get(color);
            result.put(color, ++count);
        }
        int temp = 0;
        boolean flag = false;
        int same = 0;
        String color = "white";
        for (int i = 0; i < result.keySet().toArray().length; i++) {
            if (temp < result.get(result.keySet().toArray()[i])){
                temp = result.get(result.keySet().toArray()[i]);
                color = (String) result.keySet().toArray()[i];
            } else if (temp == result.get(result.keySet().toArray()[i])){
                flag = true;
                same = temp;
            }
        }
        if (flag&&temp == same){
            return String.valueOf(same);
        } else {
           return color + " " + temp;
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
            int nextInt1 = scanner.nextInt();
            setLamps(nextInt1);
            System.out.println("请输入任意键保证程序继续！");
        while (true){
            Scanner input = new Scanner(System.in);
            Map<Integer,String> res = lamps;
            String nextString = input.nextLine();
                if (nextString.equalsIgnoreCase("exit")){
                    break;
                }
            if (!switchLampColor(Integer.valueOf(nextString))){
                break;
            }
            System.out.println(lamps);
        }
        System.out.println(getMaxColorLamps());

    }
}
